Контроль четности
Это один из стандартов, введенных IBM, в соответствии с которым информация в банках памяти хранится фрагментами по девять битов, причем восемь из них (составляющих один байт) предназначены собственно для данных, а девятый является битом четности (parity). Использование девятого бита позволяет схемам управления памятью на аппаратном уровне контролировать целостность каждого байта данных. Если обнаруживается ошибка, работа компьютера останавливается и на экран выводится сообщение о неисправности. Если вы работаете на компьютере под управлением Windows или OS/2, то при возникновении ошибки контроля четности сообщение, возможно, не появится, а просто произойдет блокировка системы.
Во всех процессорах, начиная с 386, схема контроля четности встроена в саму микросхему, поэтому никакие дополнительные микросхемы на системную плату устанавливать не нужно. В большинстве системных плат предусмотрена возможность отключения схем контроля четности для того, чтобы на них можно было устанавливать модули памяти без бита четности. К сожалению, некоторые системы вообще не поддерживают контроль четности. Данный факт ставит под сомнение четкую работу системы с критическими приложениями, требующими контроля четности.
Принцип работы проверки четности
При разработке схемы контроля четности IBM установила, что значение бита четности задается таким, чтобы количество единиц во всех девяти разрядах (восемь разрядов данных и разряд четности) было нечетным. Другими словами, когда байт (8 бит) данных заносится в память, специальная схема контроля четности (микросхема, установленная на системной плате или на плате памяти) подсчитывает количество единиц в байте. Если оно четное, на выходе микросхемы формируется сигнал логической единицы, который сохраняется в соответствующем разряде памяти как девятый бит (бит четности). Количество единиц во всех девяти разрядах при этом становится нечетным. Если же количество единиц в восьми разрядах исходных данных нечетное, то бит четности равен 0 и сумма двоичных цифр в девяти разрядах также остается нечетной.
Рассмотрим конкретный пример (имейте в виду, что разряды в байте нумеруются начиная с нуля, т. е. О, 1,2,..., 7).
Разряд данных: 01234567 Бит четности Значение бита: 101100110
В данном случае общее число единичных битов данных нечетное (5), поэтому бит четности должен быть равен нулю, чтобы количество единиц во всех девяти разрядах было нечетным.
Рассмотрим еще один пример.
Разряд данных: 01234567 Бит четности Значение бита: 001100111
В этом примере общее число единичных битов данных четное (4), поэтому бит четности должен быть равен единице, чтобы количество единиц во всех девяти разрядах, как и в предыдущем примере, было нечетным.
При считывании из памяти та же самая микросхема проверяет информацию на четность. Если в 9-разрядном байте число единиц четное и бит четности также равен единице, значит, при считывании или записи данных произошла ошибка. Определить, в каком